#ifndef PJAPIUAACCOUNTCALLBACK_H
#define PJAPIUAACCOUNTCALLBACK_H

#include "pjapiuaaccounthandler.h"

class PjApiUaAccountHandler;

class PjApiUaAccountCallback
{
public:

    PjApiUaAccountCallback(PjApiUaAccountHandler *handler);

    virtual ~PjApiUaAccountCallback();

    PjApiUaAccountHandler *getAccountHandler() const
    {
        return m_accountHandler;
    }

    //call back
    virtual void onIncomingCall(int account_id,
                                int call_id,
                                void *data);

    virtual void onInfoRequest(int session_id,
                                std::string request_name,
                                std::string content_type,
                                unsigned long long content_length,
                                void *data);

    virtual void onInfoResponse(int session_id,
                                std::string response_name,
                                std::string content_type,
                                unsigned long long content_length,
                                void *data);

    virtual void onIMMessage(int call_id,
                            const std::string from,
                            const std::string to,
                            const std::string contact,
                            const std::string mime_type,
                            const std::string body);

    virtual void onIMTyping(int call_id,
                            std::string from,
                            std::string to,
                            std::string contact,
                            bool isTyping);

    virtual void onStatlessRequestReceived(std::string from,
                                                    std::string request_name,
                                                    std::string content_type,
                                                    unsigned long long content_length,
                                                    void *data);

private:
    PjApiUaAccountHandler *m_accountHandler;
};

#endif //PJAPIUAACCOUNTCALLBACK_H
